package io;

import jdk.internal.util.xml.impl.Input;

import java.io.*;

//本类用于测试字节输入流
public class TestIn {
    public static void main(String[] args) {
//        method1();//普通字节流读取
        method2();//高效字节流读取
    }
    //高效字节流读取
    private static void method2() {
        //1.创建流对象
        InputStream in = null;
        try {
            //new BufferedInputStream(new FileInputStream(new File("")));
            in = new BufferedInputStream(new FileInputStream(""));
            //2.使用流对象
            int b ;
            while ((b = in.read())!= -1){

            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            try {
                in.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }



        //3.关流

    }
    //普通字节流读取
    private static void method1() {
        InputStream in = null;
        //1.创建字节输入流对象用来读取
        try {
             in = new FileInputStream("lujing");
            //2.使用字节输入流对象进行读取
            System.out.println(in.read()); //一次读取一个字节
            /*
            * read()每次调用都会读取一个数据字节，如果读到了数据的末尾，则返回-1*/
            int b;//定义变量用来保存每次循环读到的数据
            //数据只能从头到尾顺序的读写一次。如果不定义变量，直接打印in.read()会丢失数据，一部分数据用来
            //作为判断条件，因为每次执行方法数据都会读写一次。
            while ((b = in.read())!= -1){//只要没有读到文件末尾，返回值不是-1 就继续循环
                System.out.println(b);
            }

        } catch (Exception e) {
            e.printStackTrace();

        }finally {
            /*无论是否捕获异常，都会执行，常常用来管流*/
            //3.关闭流资源
            try {
                in.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
